#ifndef LISTWIDGET_H
#define LISTWIDGET_H

#include <QWidget>
#include <QString>
#include <QLabel>
#include <QLineEdit>
#include <QMouseEvent>
#include <QEvent>
#include <QFocusEvent>
#include <QDebug>

namespace Ui {
class ListWidget;
}

//IO数据类
class IOData
{
public:
    IOData(const QString& pinName,const QString& functionConnect,const QString& signal,const QString& hardwareConnect)
        :_pinName(pinName),_signal(signal),_functionConnect(functionConnect),_hardwareConnect(hardwareConnect)
    {}
public:
    QString _pinName;                    //引脚中文名
    QString _signal;                         //信号
    QString _functionConnect;       //功能连接
    QString _hardwareConnect;    //硬件连接
};

class ListWidget : public QWidget
{
    Q_OBJECT
    
public:
    explicit ListWidget(QWidget *parent = 0);
    ~ListWidget();
    //重写鼠标双击事件,用于修改控件的内容
    void mouseDoubleClickEvent(QMouseEvent* event);

    void setChineseNameLabel(const QString& name);
    void setFuncLabel(const QString& funcStr);
    void setSignalLabel(const QString& signalLabel);
    void setHardwareConnectLabel(const QString& label);
    void setListWidgetData(const IOData* data);
    QString getChineseNameLabel();
    QString getFuncLabel();
    QString getSignalLabel();
    QString getHardwareConnectLabel();

signals:
    void labelTextChanged(const QString& label,const QString& hardwareStr);

private slots:
    void updateLabel();

private:
    Ui::ListWidget *ui;
    QLabel* currentLabel;               //选中的label
    QLineEdit* currentLineEdit;     //用来修改的输入框
    int index;                                  //用来记录修改的位置
};

#endif // LISTWIDGET_H
